greedy math

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
    n = int(input())
    l = list(map(int, input().split()))
    occur = {}
    for c in l:
        if c not in occur:
            occur[c]=1
        else:
            occur[c]+=1
    nums = list(occur.keys())
    nums.sort()
    if len(nums)==1:
        print(n//2)
    else:
        tot = 0
        ans = 0
        for i in range(len(nums)):
            tot+=occur[nums[i]]
            ans = max(ans, tot*(n-tot))
        print(ans)
    
    

C++ Code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,a[200005];
signed main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>t;
	while(t--)
	{
		cin>>n;
		for (int i=1;i<=n;i++) cin>>a[i];
		sort(a+1,a+n+1);a[n+1]=0x3f3f3f3f;
		int ans=0;
		if (a[1]==a[n])
		{
			cout<<n/2<<endl;
			continue;
		}
		for (int i=1;i<=n;i++)
		{
			while(a[i]==a[i+1]&&i<=n) i++;
			ans=max(ans,(n-i)*i);
		}
		cout<<ans<<endl;
	}
	return 0;
}


Comments

Submit
0 Comments
More Questions

1384A - Common Prefixes
371A - K-Periodic Array
1542A - Odd Set
1567B - MEXor Mixup
669A - Little Artem and Presents
691B - s-palindrome
851A - Arpa and a research in Mexican wave
811A - Vladik and Courtesy
1006B - Polycarp's Practice
1422A - Fence
21D - Traveling Graph
1559B - Mocha and Red and Blue
1579C - Ticks
268B - Buttons
898A - Rounding
1372B - Omkar and Last Class of Math
1025D - Recovering BST
439A - Devu the Singer and Churu the Joker
1323A - Even Subset Sum Problem
1095A - Repeating Cipher
630F - Selection of Personnel
630K - Indivisibility
20B - Equation
600B - Queries about less or equal elements
1015A - Points in Segments
1593B - Make it Divisible by 25
680C - Bear and Prime 100
1300A - Non-zero
1475E - Advertising Agency
1345B - Card Constructions